#include <vector>
#include <iostream>

using namespace std;

vector<int> moveElementsToEnd(vector<int> arr, int target) {
  /*
                        vj
  {4, 1, 3, 2, 2, 2, 2, 2}
      ^i

  只有 j 在 i 的右边的时候
  arr[j] != target
  arr[i] == target
  swap(arr[i], arr[j])
  */
  int i = 0;
  int j = arr.size() - 1;

  while (i < j) {
    // 1. 从后往前移动 J
    while (i < j && arr[j] == target) {
      --j;
    }

    // 2. 比较 arr[i] 和 target
    if (arr[i] == target) {
      // 3. 交换 arr[i] arr[j]
      swap(arr[i], arr[j]);
    }

    ++i;
  }

  return arr;
}


int main(int argc, char const *argv[])
{
  /* code */
  return 0;
}
